package com.itheima.exception;

import com.itheima.common.R;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
//用于标识当前类为REST风格对应的异常处理器
@RestControllerAdvice
public class ProjectExceptionAdvice {
    //@ExceptionHandler用于设置当前处理器类对应的异常类型
    @ExceptionHandler(SystemException.class)
    public R doSystemException(SystemException ex){
        //记录日志
        //发送消息给运维
        //发送邮件给开发人员,ex对象发送给开发人员
        return  R.error(Code.SYSTEM_ERR,"系统异常");
    }

    @ExceptionHandler(BusinessException.class)
    public R doBusinessException(BusinessException ex){
        return  R.error(Code.BUSINESS_ERR,"业务层异常");
    }

    //除了自定义的异常处理器，保留对Exception类型的异常处理，用于处理非预期的异常
    //@ExceptionHandler(Exception.class)
    public R doOtherException(Exception ex){
        //记录日志
        //发送消息给运维
        //发送邮件给开发人员,ex对象发送给开发人员
        return  R.error(Code.OTHER_ERR,"其它异常");
    }
}